/**
 * 分而治之的方式, 
 *          就是声明两个数组, 给一个provit 
 *          大于这个provit就放左边, 否则放右边. 
 */

let array = [1, 89, 0, 29, 11, 111, 798, 90]
var quickSort = function (arr) {
    if (arr.length <= 1) return arr

    var pivotIndex = Math.floor(arr.length / 2);
    var pivot = arr.splice(pivotIndex, 1)[0];
    var left = [];
    var right = [];

    for (var i = 0; i < arr.length; i++) {
        if (arr[i] < pivot) {
            left.push(arr[i]);
        } else {
            right.push(arr[i]);
        }
    }

    // Es6之前的中的concat和Es6后的拓展运算符是一样效果, ...rest[...arguments]
    // return quickSort(left).concat([pivot], quickSort(right));
    return [...quickSort(left), pivot, ...quickSort(right)]
}

console.log(quickSort(array));